package com.app.backend.common.service;

import java.util.List;
import java.util.Set;

/**
 * @program: RedisHashService
 * @description: redis操作类-hash操作
 * @author: Zhun.Xiao
 * @create: 2018-10-29 16:12
 **/
public interface RedisHashService<T> {


    /**
     * 向redis中存放单个数据
     *
     * @param redisKey redis存放的key
     * @param key      存放对象的key
     * @param doamin   存放的对象
     * @param expire   存放时间 单位：秒
     */
    public void put(String redisKey, String key, T doamin, long expire);

    /**
     * 向redis移除单个数据
     *
     * @param redisKey redis存放的key
     * @param key      存放对象的key
     */
    public void remove(String redisKey, String key);

    /**
     * 向redis获取单个数据
     *
     * @param redisKey redis存放的key
     * @param key      存放对象的key
     * @return 返回对象
     */
    public T get(String redisKey, String key);


    /**
     * 获取当前redis库下所有对象
     *
     * @param redisKey redis存放的key
     * @return
     */
    public List<T> getAll(String redisKey);


    /**
     * 查询查询当前redis库下所有key
     *
     * @param redisKey redis存放的key
     * @return
     */
    public Set<String> getKeys(String redisKey);


    /**
     * 判断key是否存在redis中
     *
     * @param redisKey redis存放的key
     * @param key      传入key的名称
     * @return
     */
    public boolean isKeyExists(String redisKey, String key);


    /**
     * 查询当前key下缓存数量
     *
     * @param redisKey redis存放的key
     * @return
     */
    public long count(String redisKey);


    /**
     * 清空redis
     *
     * @param redisKey redis存放的key
     */
    public void empty(String redisKey);


}
